﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Collections;
using Proxy;
using System.Web.Services;
using System.Text;
using SIM.Util;

namespace SIM.Geo.UI.Geo
{
    public partial class frmAvancePerforacion : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.rgLista.ClientSettings.Scrolling.ScrollHeight = int.Parse(System.Configuration.ConfigurationManager.AppSettings["listaPrincipalScrollHeight"]);
                CargarCombos();
                Listar();
            }

        }

        #region Metodos

        protected override void Listar()
        {
            try
            {
                using (var proxy = new SEAvanceDiarioClient("BasicHttpBinding_ISEAvanceDiario"))
                {
                    var lista = proxy.BuscarAvanceDiario(int.Parse(System.Configuration.ConfigurationManager.AppSettings["codigoEmpresaColquisiri"].ToString()), int.Parse(this.ddlMaquinaBuscar.SelectedValue), this.txtAnio.Text, this.ddlMesBuscar.SelectedValue);
                    this.rgLista.DataSource = lista;
                    
                    this.rgLista.DataBind();
                }

            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:Listar", ex);
            }
        }

        private void CargarCombos()
        {
            try
            {
                using (SEMaquinaClient proxy = new SEMaquinaClient("BasicHttpBinding_ISEMaquina"))
                {
                    this.Bind(this.ddlMaquinaBuscar, proxy.ObtenerListItem2(int.Parse(System.Configuration.ConfigurationManager.AppSettings["codigoEmpresaColquisiri"].ToString()), enmDiamantino.EsDiamantino.GetHashCode()));
                    this.ddlMaquinaBuscar.Items.Insert(0, new ListItem(Constantes.TipoSeleccion.TODOS, TipoDropDownList.Todos.GetHashCode().ToString()));
                }

                this.txtAnio.Text = DateTime.Today.Year.ToString();

                using (SEMesClient proxy = new SEMesClient("BasicHttpBinding_ISEMes"))
                {
                    this.Bind(this.ddlMesBuscar, proxy.ObtenerListItem());
                    this.ddlMesBuscar.SelectedValue = DateTime.Today.Month.ToString().PadLeft(2, '0');
                }

            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:CargarCombos", ex);
            }
        }

        private void MostrarDetalle(int codigoAvanceDiario, enmAccionRealizar accionRealizar)
        {
            try
            {
                if (accionRealizar == enmAccionRealizar.Edicion)
                {
                    //Carga detalla de pantalla en modo Edicion
                    //this.CargarDatos(int.Parse(this.hidCodigoSondaje.Value), codigoEstructura);
                    Response.Redirect("frmAvancePerforacionRegitro.aspx?id=" + codigoAvanceDiario.ToString() + "&acc=" + accionRealizar.GetHashCode().ToString() + "&an=0&mes=0", false);
                    //Habilitar(true);
                }
                else if (accionRealizar == enmAccionRealizar.Ver)
                {
                    //Carga detalla de pantalla en modo Consulta
                    //this.CargarDatos(int.Parse(this.hidCodigoSondaje.Value), codigoEstructura);
                    Response.Redirect("frmAvancePerforacionRegitro.aspx?id=" + codigoAvanceDiario.ToString() + "&acc=" + accionRealizar.GetHashCode().ToString() + "&an=0&mes=0", false);
                    //Habilitar(false);
                }
                else if (accionRealizar == enmAccionRealizar.Nuevo)
                {
                    //Carga detalla de pantalla en modo Nuevo
                    //Limpiar();
                    //Habilitar(true);
                    Response.Redirect("frmAvancePerforacionRegitro.aspx?id=" + codigoAvanceDiario.ToString() + "&acc=" + accionRealizar.GetHashCode().ToString() + "&an=" + this.txtAnio.Text + "&mes=" + this.ddlMesBuscar.SelectedValue, false);
                }

                OcultarMensaje();
            }
            catch (Exception ex)
            {

                Logger.Error("frmGeoMecanica:MostrarDetalle", ex);
            }
        }

        #region Mensajes
        protected override void MostrarMensaje(string mensaje, enmTipoMensajeMostrar tipoMensaje = enmTipoMensajeMostrar.Informativa)
        {
            this.pnlMensaje.Visible = true;
            this.lblMensaje.Text = mensaje;
            this.pnlMensaje.CssClass = this.ObtenerEstiloMensaje(tipoMensaje);
        }

        protected override void OcultarMensaje()
        {
            this.pnlMensaje.Visible = false;
            this.lblMensaje.Text = string.Empty;
        }

        #endregion

        #endregion

        #region Eventos
        protected void ibtnBuscar_Click(object sender, ImageClickEventArgs e)
        {
            Listar();
        }

        protected void rgLista_DeleteCommand(object sender, GridCommandEventArgs e)
        {
            try
            {
                int codigoAvanceDiario = int.Parse(((GridDataItem)e.Item).GetDataKeyValue("CodigoAvanceDiario").ToString());
                using (var proxy = new SEAvanceDiarioClient("BasicHttpBinding_ISEAvanceDiario"))
                {
                    proxy.EliminarAvanceDiario(codigoAvanceDiario);
                }
                this.Listar();
                this.MostrarMensaje(MSG_OK_ELIMINAR);
            }
            catch (Exception ex)
            {
                this.MostrarMensaje(MSG_ERROR_ELIMINAR, enmTipoMensajeMostrar.Error);
                Logger.Error("frmAvancePerforacion:rgLista_DeleteCommand", ex);
            }
        }

        protected void rgLista_PageIndexChanged(object sender, GridPageChangedEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_SortCommand(object sender, GridSortCommandEventArgs e)
        {
            this.Listar();
        }

        protected void rgLista_ItemCommand(object sender, GridCommandEventArgs e)
        {
            if (e.CommandName.CompareTo("Editar") == 0)
            {
                var item = (GridEditableItem)e.Item;
                int codigoAvanceDiario = int.Parse(item.GetDataKeyValue("CodigoAvanceDiario").ToString());
                MostrarDetalle(codigoAvanceDiario, enmAccionRealizar.Edicion);
            }

            if (e.CommandName.CompareTo("Ver") == 0)
            {
                //Ver solo lectura
                var item = (GridEditableItem)e.Item;
                int codigoAvanceDiario = int.Parse(item.GetDataKeyValue("CodigoAvanceDiario").ToString());
                MostrarDetalle(codigoAvanceDiario, enmAccionRealizar.Ver);
            }
            if (e.CommandName.CompareTo("Imprimir") == 0)
            {
                //Ver solo imprimir
                var item = (GridEditableItem)e.Item;
                int codigoAvanceDiario = int.Parse(item.GetDataKeyValue("CodigoAvanceDiario").ToString());
                Response.Redirect("../Reportes/frmVisor.aspx?cod=" + codigoAvanceDiario.ToString());
            }

            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Listar();
            }
        }

        protected void rgLista_ItemDataBound(object sender, GridItemEventArgs e)
        {
            try
            {
                if (e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem)
                {
                    GridDataItem item = (GridDataItem)e.Item;
                    //if (this.hidEstadoSondaje.Value.CompareTo(enmEstadoSondaje.FINALIZADO.GetHashCode().ToString()) == 0 |
                    //    this.hidCumplimiento.Value.CompareTo(enmEstadoCumplimiento.CUMPLIDO.GetHashCode().ToString()) == 0)
                    //{
                    //    ImageButton btnEliminar = (ImageButton)item["btnEliminar"].Controls[0];
                    //    btnEliminar.ToolTip = BUTTON_TOOLTIP_DESHABILITADO;
                    //    btnEliminar.Enabled = false;

                    //    ImageButton btnEditar = (ImageButton)item["btnEditar"].Controls[0];
                    //    btnEditar.ToolTip = BUTTON_TOOLTIP_DESHABILITADO;
                    //    btnEditar.Enabled = false;
                    //}
                }
            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:rgLista_ItemDataBound", ex);
            }
        }

        protected void ibtnExportar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Listar();
                string alternateText = "ExcelML";
                this.rgLista.ExportSettings.Excel.Format = (GridExcelExportFormat)Enum.Parse(typeof(GridExcelExportFormat), alternateText);
                this.rgLista.ExportSettings.IgnorePaging = true;
                this.rgLista.ExportSettings.ExportOnlyData = true;
                this.rgLista.ExportSettings.OpenInNewWindow = true;
                this.rgLista.MasterTableView.ExportToExcel();
            }
            catch (Exception ex)
            {

                Logger.Error("frmAvancePerforacion:ibtnExportar_Click", ex);
            }
        }

        protected void ibtnRegistrar_Click(object sender, ImageClickEventArgs e)
        {
            MostrarDetalle(0, enmAccionRealizar.Nuevo);
        }

        #endregion


    }
}